﻿using ConfExpert.Forms.Base;

using DevExpress.XtraEditors;
using DevTeam;

using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;

namespace ConfExpert.Forms.Depo
{
    public partial class AksesuarCikisPartileri : XForm
    {
        public AksesuarCikisPartileri()
        {
            InitializeComponent();
        }

        private void AksesuarCikisPartileri_Load(object sender, EventArgs e)
        {
            gvCikisPartisi.Init("GetAllAksesuarParti", MyDept, 1);
            gvCikisPartisi.AddDetailGrid(gvCikisPartisiLines, "AksesuarCikanPartiId");

            gvCikisPartisiLines.MakeColumnInvisible("AksesuarHareketId", "AksesuarCikanPartiId", "AksesuarCikanPartiLinesId");

            gvCikisPartisi.SetCaptions("AksesuarCikanPartiId:#Nr", "AksesuarCikisTalebiId:TalepId");

            
            gvCikisPartisiLines.FormatAsNumber(0, "Qty");

            gvCikisPartisi.MakeReadOnly();

            gvCikisPartisiLines.AddSummary("Qty");

            GridManager gm = GridManager.GetManager(gvCikisPartisi);
            gm.GridMenu.AddMenu("İrsaliye Yazdır", PrintIrsaliye);
            gm.GridMenu.AddMenu("Çıkışı İptal Et", CancelCikis);
            if (ytk(54))
                gm.GridMenu.AddMenu("İrsaliyeye Ekle", AddAksesuarToIrsaliye);

            splitContainerControl1.AutoSize();

            gvCikisPartisi.Columns["DosyaNo"].Width = 100;

            chkKapalilar.CheckedChanged += chkKapalilar_CheckedChanged;
            bbiRefresh.ItemClick += bbiRefresh_ItemClick;
        }

        void bbiRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvCikisPartisi.RefreshDataSource("GetAllAksesuarParti", MyDept, chkKapalilar.Checked == true ? 2 : 1);
        }

        void chkKapalilar_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            bbiRefresh.PerformClick();
        }

        public string CikanPartiIds;
        void AddAksesuarToIrsaliye(object sender, EventArgs e)
        {
            CikanPartiIds = gvCikisPartisi.GetSelectedValues("AksesuarCikanPartiId");
            this.DialogResult = DialogResult.OK;
        }

        void CancelCikis(object sender, EventArgs e)
        {
            DataRow dr = gvCikisPartisi.GetDataRow(gvCikisPartisi.FocusedRowHandle);
            int stIrsaliye = intParse(dr["stIrsaliyeId"]);
            int cikisPartisi = intParse(dr["AksesuarCikanPartiId"]);
            int talepId = intParse(dr["AksesuarCikisTalebiId"]);
            if (stIrsaliye == 2)
            {
                MessageBox.Show("Bu çıkışa ait irsaliye kesilmiş. İptal edemezsiniz!");
            }
            else
            {
                ExecuteNonQuery("DelAksesuarCikisPartisi", cikisPartisi, talepId, WhoAmI); 
                gvCikisPartisi.RefreshDataSource("GetAllAksesuarParti", MyDept, chkKapalilar.Checked == true ? 2 : 1);
            }
        }

        void PrintIrsaliye(object sender, EventArgs e)
        {
            DataRow dr = gvCikisPartisi.GetDataRow(gvCikisPartisi.FocusedRowHandle);
            CikanPartiIds = gvCikisPartisi.GetSelectedValues("AksesuarCikanPartiId");

            DataTable dt = gvCikisPartisi.DataTable().Select("AksesuarCikanPartiId in (" + CikanPartiIds + ")").CopyToDataTable();
            int atelyeId = dt.Select("AksesuarCikanPartiId in (" + CikanPartiIds + ") and KaynakId=" + dt.Rows[0]["KaynakId"].ToString() + " and CariId=" + dt.Rows[0]["CariId"].ToString()).Length;
            int KesilenIrsaliye = dt.Select("AksesuarCikanPartiId in (" + CikanPartiIds + ") and stIrsaliyeId not in (1,4)").Length;

            if (dt.Rows.Count > atelyeId)
            {
                ShowErrorMessage("Seçtiğiniz satırlarda farklı cari bilgileri var. Lütfen kontrol ediniz !");
                return;
            }

            int KaynakId = intParse(dt.Rows[0]["KaynakId"]);
            int CariId = intParse(dt.Rows[0]["CariId"]);

            if (ytk(147))
            {
                if (KesilenIrsaliye > 0)
                {
                    ShowErrorMessage("Sadece irsaliyesi kesilmemiş çıkışların irsaliyelerini kesebilirsiniz. Seçtiğiniz çıkış partilerini kontrol ediniz !");
                    return;
                }
                using (KoliIrsaliyeOlustur ki = new KoliIrsaliyeOlustur(CikanPartiIds, dt.Rows[0]["CariId"].ToInt(-1)))
                {
                    if (ki.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        gvCikisPartisi.RefreshDataSource("GetAllAksesuarParti", MyDept, chkKapalilar.Checked == true ? 2 : 1);
                }
            }
            else
            {
                bool kes = false;
                if (KesilenIrsaliye > 0)
                {
                    if (XtraMessageBox.Show("Seçtiğiniz satırlarda irsaliyesi kesilmiş partiler var. Tekrar kesmek ister misiniz?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                        kes = true;
                }
                else
                    kes = true;

                if (kes)
                {
                    using (AksIrsaliyeOlustur ai = new AksIrsaliyeOlustur(/*Brand, Sezon, TalepEden, Dosya,*/ KaynakId, CariId, CikanPartiIds, KesilenIrsaliye))
                    {
                        if (ai.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            gvCikisPartisi.RefreshDataSource("GetAllAksesuarParti", MyDept, chkKapalilar.Checked == true ? 2 : 1);
                    }
                }
            }
        }

    }
}